home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / lamstex / inputs / places.tex < prev    next >
Text File  |  1991-09-06  |  10KB  |  289 lines

  1. \catcode`\@=11
  2. \long\def\islandpairdata#1#2{{\data@true
  3.  \place@true
  4.  #1%
  5.  \global\setbox\islandboxi\box\islandbox@
  6.  \global\setbox\captionboxi\box\Captionbox@
  7.  #2%
  8.  \global\setbox\islandboxii\box\islandbox@
  9.  \global\setbox\captionboxii\box\Captionbox@
  10.  }}
  11. \long\def\islandpairbox#1#2{\islandpairdata{#1}{#2}%
  12.  \dimen@\ht\captionboxi
  13.  \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi
  14.  \ifdim\dimen@>\z@
  15.   \ifdim\ht\captionboxi<\dimen@
  16.    \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi
  17.   \ifdim\ht\captionboxii<\dimen@
  18.    \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi
  19.  \fi
  20.  \global\setbox\islandbox@\vbox
  21.  {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}%
  22.  \ifdim\dimen@>\z@\nointerlineskip
  23.  {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount
  24.   \vskip\skipi@
  25.   \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}\fi}}    
  26. \long\def\islandpairboxa#1#2{\islandpairdata{#1}{#2}%
  27.  \dimen@\ht\captionboxi
  28.  \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi
  29.  \ifdim\dimen@>\z@
  30.   \ifdim\ht\captionboxi<\dimen@
  31.    \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi
  32.   \ifdim\ht\captionboxii<\dimen@
  33.    \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi
  34.  \fi
  35.  \dimen@ii\ht\islandboxi
  36.  \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi
  37.  \ifdim\dimen@ii>\z@
  38.   \ifdim\ht\islandboxi<\dimen@ii
  39.    \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi
  40.   \ifdim\ht\islandboxii<\dimen@ii
  41.    \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi
  42.  \fi
  43.  \global\setbox\islandbox@\vbox{\ifdim\dimen@>\z@
  44.   \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}%
  45.   \nointerlineskip{\rm\global\skipi@-\dp\strutbox}%
  46.   \global\advance\skipi@\bigskipamount\vskip\skipi@\fi
  47.   \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}}}
  48. \long\def\islandtripledata#1#2#3{{\data@true\place@true
  49.  #1%
  50.  \global\setbox\islandboxi\box\islandbox@
  51.  \global\setbox\captionboxi\box\Captionbox@
  52.  #2%
  53.  \global\setbox\islandboxii\box\islandbox@
  54.  \global\setbox\captionboxii\box\Captionbox@
  55.  #3%
  56.  \global\setbox\islandboxiii\box\islandbox@
  57.  \global\setbox\captionboxiii\box\Captionbox@
  58.  }}
  59. \long\def\islandtriplebox#1#2#3{\islandtripledata{#1}{#2}{#3}%
  60.  \dimen@\ht\captionboxi
  61.  \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi
  62.  \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi
  63.  \ifdim\dimen@>\z@
  64.   \ifdim\ht\captionboxi<\dimen@
  65.    \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi
  66.   \ifdim\ht\captionboxii<\dimen@
  67.    \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi
  68.   \ifdim\ht\captionboxiii<\dimen@
  69.    \global\setbox\captionboxiii\vbox to\dimen@{\unvbox\captionboxiii\vfil}\fi
  70.  \fi
  71.  \global\setbox\islandbox@\vbox
  72.   {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil
  73.    \box\islandboxiii\hfil}%
  74.  \ifdim\dimen@>\z@\nointerlineskip
  75.   {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount
  76.   \vskip\skipi@
  77.   \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil
  78.    \box\captionboxiii\hfil}\fi}}
  79. \def\islandtripleboxa#1#2#3{\islandtripledata{#1}{#2}{#3}%
  80.  \dimen@\ht\captionboxi
  81.  \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi
  82.  \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi
  83.  \ifdim\dimen@>\z@
  84.   \ifdim\ht\captionboxi<\dimen@
  85.    \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi
  86.   \ifdim\ht\captionboxii<\dimen@
  87.    \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi
  88.   \ifdim\ht\captionboxiii<\dimen@
  89.    \global\setbox\captionboxiii\vbox to\dimen@{\vfil\unvbox\captionboxiii}\fi
  90.  \fi
  91.  \dimen@ii\ht\islandboxi
  92.  \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi
  93.  \ifdim\ht\islandboxiii>\dimen@ii \dimen@ii\ht\islandboxiii\fi
  94.  \ifdim\dimen@ii>\z@
  95.   \ifdim\ht\islandboxi<\dimen@ii
  96.    \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi
  97.   \ifdim\ht\islandboxii<\dimen@ii
  98.    \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi
  99.   \ifdim\ht\islandboxiii<\dimen@ii
  100.    \global\setbox\islandboxiii\vbox to\dimen@ii{\box\islandboxiii\vfil}\fi
  101.  \fi
  102.  \global\setbox\islandbox@\vbox
  103.   {\ifdim\dimen@>\z@
  104.   \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil
  105.    \box\captionboxiii\hfil}%
  106.   \nointerlineskip{\rm\global\skipi@-\dp\strutbox}%
  107.   \global\advance\skipi@\bigskipamount\vskip\skipi@\fi
  108.   \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil
  109.    \box\islandboxiii\hfil}}}
  110. \def\Figurepair#1\and#2\endFigurepair{\island@true
  111.  \islandpairbox{\Figure#1\endFigure}{\Figure#2\endFigure}}
  112. \def\Figuretriple#1\and#2\and#3\endFiguretriple{\island@true
  113.  \islandtriplebox{\Figure#1\endFigure}{\Figure#2\endFigure}%
  114.   {\Figure#3\endFigure}}
  115. \def\Tablepair#1\and#2\endTablepair{\island@true
  116.  \islandpairboxa{\Table#1\endTable}{\Table#2\endTable}}
  117. \def\Tabletriple#1\and#2\and#3\endTabletriple{\island@true
  118.  \islandtripleboxa{\Table#1\endTable}{\Table#2\endTable}%
  119.  {\Table#3\endTable}}
  120. \def\Par{\par\global\csname Parprev1\endcsname\prevdepth
  121.  \global\Parcount@\@ne
  122.  \global\Par@true\global\let\Parlist@\empty
  123.  \global\setbox\Parbox@\vbox\bgroup\break}
  124. \long\def\AAplace#1{\prevanish@\place@true\island@false
  125.  #1%
  126.  \place@ A\AAplace@
  127.  \postvanish@}
  128. \def\AAplace@{\AA@true\Aplace@\AA@false}
  129. \long\def\Bplace#1{\prevanish@\place@true\island@false
  130.  #1%
  131.  \place@ b\Bplace@
  132.  \postvanish@}
  133. \def\Bplace@{\allowbreak
  134.  \ifnum\topinscount@=\z@
  135.   \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}%
  136.   \dimen@-\skip\topins
  137.   \ht\z@\dimen@
  138.   \storedim@
  139.   \advancedimtopins@
  140.   \insert\topins{\boxz@}%
  141.   \global\advance\topinscount@\@ne
  142.   \xdef\AAlist@{\AAlist@0}%
  143.  \fi
  144.  \dimen@\ht\islandbox@
  145.  \advance\dimen@\abovebotfigskip
  146.  \ht\islandbox@\dimen@
  147.  \advance\dimen@\dp\islandbox@
  148.  \storedim@
  149.  \xdef\AAlist@{\AAlist@0}%
  150.  \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi
  151.  \insert\topins{\penalty\z@\splittopskip\z@
  152.   \floatingpenalty\z@
  153.   \box\islandbox@}%
  154.  \global\advance\topinscount@\@ne}
  155. \def\Place@#1#2{%
  156.  \ifisland@
  157.   \ifhmode
  158.    \ifPar@
  159.     \ifnum\Parcount@>5
  160.      \Err@{Only 5 \string\place's allowed per
  161.        \string\Par...\noexpand\endPar paragraph}%
  162.     \else
  163.      \expandafter\expandafter\expandafter\global\expandafter\setbox
  164.       \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@
  165.      \global\advance\Parcount@\@ne
  166.      \xdef\Parlist@{\Parlist@#1}%
  167.      \vadjust{\break}%
  168.     \fi
  169.    \else
  170.     \Err@{\noexpand#2allowed only in a \string\Par...\noexpand\endPar
  171.      paragraph}%
  172.    \fi
  173.   \else
  174.    #2%
  175.   \fi
  176.  \else
  177.   \Err@{Who ... there's no \string\Figure, \string\Table,
  178.    etc., here}%
  179.  \fi
  180.  \place@false}
  181. \long\def\Cplace#1{\prevanish@\place@true\island@false
  182.  #1%
  183.  \Place@ c\Cplace@
  184.  \postvanish@}
  185. \def\Cplace@{\allowbreak
  186.  \ifnum\topinscount@>\z@\else
  187.   \global\C@true\global\Cdim@\pagetotal\fi
  188.  \Aplace@}
  189. \long\def\Mplace#1{\prevanish@\place@true\island@false
  190.  #1%
  191.  \Place@ m\Mplace@
  192.  \postvanish@}
  193. \long\def\MXplace#1{\prevanish@\place@true\island@false
  194.  #1%
  195.  \Place@ M\MXplace@
  196.  \postvanish@}
  197. \def\MXplace@{\MX@true\Mplace@\MX@false}
  198. \def\Mplace@{\allowbreak
  199.  \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@
  200.  \ifdim\pagetotal=\z@\else
  201.   \ifdim\lastskip<\abovebotfigskip\advance\dimen@\abovebotfigskip
  202.   \advance\dimen@-\lastskip\fi
  203.  \fi
  204.  \advance\dimen@\pagetotal
  205.  \ifdim\dimen@>\pagegoal
  206.   \Aplace@
  207.  \else
  208.   \nointerlineskip
  209.   \ifdim\lastskip<\abovebotfigskip\removelastskip\vskip\abovebotfigskip\fi
  210.   \setbox\z@\vbox{\unvbox\islandbox@
  211.    \breakisland@}%
  212.   \printisland@
  213.   \ifnum\topinscount@=\z@
  214.    \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}%
  215.    \dimen@-\skip\topins
  216.    \ht\z@\dimen@
  217.    \storedim@
  218.    \advancedimtopins@
  219.    \insert\topins{\boxz@}%
  220.    \global\advance\topinscount@\@ne
  221.    \xdef\AAlist@{\AAlist@0}%
  222.   \fi
  223.   \ifMX@
  224.    \ifnum\topinscount@=\@ne
  225.     \setbox\z@\vbox{\vbox to-\abovebotfigskip{}}%
  226.     \ht\z@\z@
  227.     \dimen@\z@
  228.     \storedim@
  229.     \advancedimtopins@
  230.     \insert\topins{\boxz@}%
  231.     \global\advance\topinscount@\@ne
  232.     \xdef\AAlist@{\AAlist@0}%
  233.    \fi
  234.   \fi
  235.   \nointerlineskip
  236.   \vskip\belowtopfigskip
  237.  \fi}
  238. \def\endPar{\egroup
  239.  \count@\@ne
  240.  {\vbadness\@M\vfuzz\maxdimen\splitmaxdepth\maxdimen\splittopskip\ht\strutbox
  241.  \setbox\z@\vsplit\Parbox@ to\ht\Parbox@
  242.  \loop
  243.   \ifnum\count@<\Parcount@
  244.   \expandafter\expandafter\expandafter\global\expandafter\setbox
  245.    \csname Parbox\number\count@\endcsname\vsplit\Parbox@ to\ht\Parbox@
  246.   \count@@\count@\advance\count@@\@ne
  247.   \global\csname Parprev\number\count@@\endcsname
  248.    \dp\csname Parbox\number\count@\endcsname
  249.   \advance\count@\@ne
  250.   \repeat}%
  251.  \vskip\parskip
  252.  \count@\@ne
  253.  \def\nextv@##1##2\nextv@{\DN@{##1}\gdef\Parlist@{##2}}%
  254.  \loop
  255.   \ifnum\count@<\Parcount@
  256.    \dimen@\csname Parprev\number\count@\endcsname
  257.    \advance\dimen@\ht\strutbox
  258.    \ifdim\dimen@<\baselineskip
  259.     \advance\dimen@-\baselineskip\vskip-\dimen@
  260.    \else
  261.     \vskip\lineskip
  262.    \fi
  263.    \unvbox\csname Parbox\number\count@\endcsname
  264.    \global\setbox\islandbox@\box\csname Parfigbox\number\count@\endcsname
  265.    \expandafter\nextv@\Parlist@\nextv@
  266.    \if a\next@\Aplace@\else
  267.    \if A\next@\AAplace@\else
  268.    \if b\next@\Bplace@\else
  269.    \if c\next@\Cplace@\else
  270.    \if m\next@\Mplace@\else
  271.    \if M\next@\MXplace@\fi\fi\fi\fi\fi\fi
  272.   \advance\count@\@ne
  273.   \repeat
  274.  \global\Par@false
  275.  \ifvoid\Parbox@
  276.   \prevdepth\csname Parprev\number\count@\endcsname
  277.  \else
  278.   \dimen@\csname Parprev\number\count@\endcsname\advance\dimen@\ht\strutbox
  279.   \ifdim\dimen@<\baselineskip
  280.     \advance\dimen@-\baselineskip\vskip-\dimen@
  281.   \else
  282.     \vskip\lineskip
  283.   \fi
  284.   \dimen@\dp\Parbox@
  285.   \unvbox\Parbox@
  286.   \prevdepth\dimen@
  287.  \fi}
  288. \catcode`\@=\active
  289.